<?php
require_once('../zAPI/properties.inc.php');
require_once( ROOT_CLASS . 'Kernel.class.php');
require_once( $kernel->getClass("Util") );
require_once( $kernel->getClass("BusinessObject") );
require_once( ROOT_CLASS . 'DataObject/DoadorDO.class.php');
require_once( ROOT_CLASS . 'DataObject/PessoaDO.class.php');
require_once( ROOT_DATA_OBJECT . 'DataObject.class.php');
require_once( ROOT_CLASS . 'zAccess/zAccess.class.php' );
?>

<?php 
class DoadorController{
	
	function __construct(){
		$AccessAction = new AccessAction();
		$AccessAction->validSessionUsuario();
    }
	
	function listarDoadores($instanceDB, $postRequest, $getRequest){
		
		$limit = $_POST["limit"]; // varíável usada para controlar o limite de paginação
		$start = $_POST["start"]; // varíável usada para controlar o início de paginação
		$filter = $_POST["query"];
		
		$doadorBO = new DoadorBO();	
		
		$result = $doadorBO->listarDoadores($instanceDB, $limit, $start, $filter);
			$retorno.= "{";
			$retorno.="success:true,";
			$dados = "";
			$aux = "";
			for ($i = 0; $i < count($result["object"]); $i++){
				$dados .= $aux . utf8_encode( $result["object"][$i]->transformDataObjectToJSON() );
				$aux = ",";
			}
			$retorno.="results:".$result["qtdRegistros"].",";
			$retorno.="message: 'Doadores listados com sucesso',";
			$retorno.="elements:[" . $dados . "]";
		$retorno.="}";
		
		return $retorno;
	
	}
	
	
	function inserir($instanceDB, $postRequest, $getRequest){
		
		$doadorBO= new DoadorBO();
		$pessoaBO = new PessoaBO();
		
		$doadorDO = new DoadorDO();
		$pessoaDO = new PessoaDO();
		
		$doadorDO->loadDataObjectByPost( $_POST, TRUE );
		$pessoaDO->loadDataObjectByPost( $_POST, TRUE );
		
		$result = $pessoaBO->inserir($instanceDB, $pessoaDO);
		$doadorDO->set("Pessoa_codigo", $result->get("codigo"));
		
		$result = $doadorBO->inserir($instanceDB, $doadorDO);
				
		if ( $result === FALSE ){
			$retorno = "{";
			$retorno .= "success : false,";
			$retorno .= "message : 'Não foi possível inserir as informações'";
			$retorno .= "}";
		} else {
			$retorno = "{";
			$retorno .= "success : true,";
			$retorno .= "message : 'Inserido com com sucesso!',";
			$dados = "";
			$aux = "";
			for ($i = 0; $i < count($result); $i++){
				$dados .= $aux . utf8_encode( $result[$i]->transformDataObjectToJSON() );
				$aux = ",";
			}
			$retorno .=  "elements : [" . $dados . "]";
			$retorno .= "}";
		}
		
		return $retorno;		
	}
	
	function excluir($instanceDB, $postRequest, $getRequest){

		$doadorBO = new DoadorBO();
		$pessoaBO = new PessoaBO();
		
		$doadorDO = new DoadorDO();
		$pessoaDO = new PessoaDO();
		
		$codigoDoador= $_POST["codigoDoador"];
		$pessoaDO->set( "codigo", $codigoDoador);
		$doadorDO->set( "Pessoa_codigo", $codigoDoador);
		
		$resultadoPessoa = $pessoaBO->excluir( $instanceDB, $pessoaDO );
		$resultadoDoador= $doadorBO->excluir( $instanceDB, $doadorDO );
		
		if ( $resultadoDoador=== FALSE || $resultadoDoador === FALSE){
			$retorno = "{";
			$retorno .= "success : false,";
			$retorno .="message : 'Não foi possível excluir o registro'";
			$retorno .="}";
		}else {
			$retorno ="{";
			$retorno .="success : true,";
			$retorno .="message : 'Excluído com sucesso!'";
			$retorno .="}";
		}
		
		return $retorno;
		
	}
	
	
	
	function alterar($instanceDB, $postRequest, $getRequest){
			
		$doadorBO = new DoadorBO();
		$pessoaBO = new PessoaBO();
		
		$doadorDO = new DoadorDO();
		$pessoaDO = new PessoaDO();
		
		$doadorDO->loadDataObjectByPost( $_POST, TRUE );
		$pessoaDO->loadDataObjectByPost( $_POST, TRUE );
		
		$resultadoPessoa = $pessoaBO->alterar( $instanceDB, $pessoaDO );
		$resultadoDoador= $doadorBO->alterar( $instanceDB, $doadorDO );
			
		if ( $resultadoPessoa === FALSE || $resultadoDoador=== FALSE){
			$retorno = "{";
			$retorno .= "success : false,";
			$retorno .= "message : 'Não foi possível alterar o registro'";
			$retorno .= "}";
		}else {
			$retorno = "{";
			$retorno .= "success : true,";
			$retorno .= "message : 'Alterado com sucesso!'";
			$retorno .= "}";
		}
		
		return $retorno; 

	}
	
}
?>
